FIG. 1 schematically shows a conventional full-duplex serial communication system. It includes a pair of similar serial interfaces SIF1 and SIF2, such as UARTs, connected to each other in a 5-wire configuration. These wires carry four signals and a common ground. The ground wire is not shown.
Each serial interface has a transmit output TX, a receive input RX, a flow-control output RTS, and a flow-control input CTS. The TX and RTS outputs of interface SIF1 are connected respectively to the RX and CTS inputs (RX2, CTS2) of interface SIF2. The RX and CTS inputs of interface SIF1 are connected respectively to the TX and RTS outputs (TX2, RTS2) of interface SIF2.
Historically “RTS” and “CTS” stand for “Request To Send” and “Clear To Send”. This terminology is no longer relevant to the way these signals are used today in UARTs. In practice, an active state of the RTS signal indicates to the remote interface that it may send data, and an inactive state indicates that the remote interface should stop sending data, for instance because the receive buffer in the local interface is full.
FIG. 2 is a diagram showing an exemplary message transmission sequence from interface SIF1 to SIF2. The signals and lines are named according to the corresponding input/output terminals of interface SIF1.
The signals are active-low, i.e. a signal at “1” is inactive and a signal at “0” is active. Initially all signals are inactive (at “1”), for instance during power-on. At some point in time, for instance after a reset in each of the interfaces, the RTS and CTS signals become active. The signal CTS is shown as becoming active after signal RTS, but this order of events is not necessary. A transmission of a serial data message on line TX may only start when signal CTS is active, from a time t0. The state of signal RTS is irrelevant to the transmission.
A message transmission on line TX is shown as black areas. The transmission may start as soon as signal CTS is enabled, at time t0. At a time t1, the remote interface SIF2 disables signal CTS to indicate that it can no longer receive data. Interface SIF1 responds by suspending the message transmission. In practice, interface SIF1 finishes the transmission of the current atomic data unit, for instance a byte, before actually stopping the transmission, whereby the transmission may continue for a short period of time after t1, as shown.
When the remote interface SIF2 is ready to receive data again, it activates signal CTS at a time t2, from which the interrupted transmission may resume on line TX. When the transmission is finished, both interfaces are idle and the signals RTS and CTS remain active as long as the interfaces are powered, meaning that each interface is ready to receive data.
In some applications, it is desirable to set the interfaces SIF1 and SIF2 in a low-power state while they are not communicating, for instance by turning off their clocks. When the interfaces need to communicate again, they should be able to wake each other up. Such a goal has been achieved, for example, by providing additional signal lines between the interfaces, whose sole purpose is to allow each interface to wake-up the other interface from a low-power state. This approach is described, for instance, in “Transport Bus Driver for Bluetooth Power Control Handling Guidelines” published by Microsoft and available from the following link: http://feishare.com/attachments/article/291/transport-bus-driver-for-bluetooth-power-handling.pdf.